use lib;
/*
mod basic;
mod channel;
mod collections;
mod error;
mod functional;
mod generics;
mod oop;
mod ownership;
mod sharedstate;
mod slice;
mod smartpoint;
mod sp;
mod structure;
mod thread;
mod patterns;
mod advfeature;
*/
mod singlet;

use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
  /*
  let r = lib::add(1, 2);
  println!("Hello, {}!", r);
  */
  //println!("====== module: basic ======");
  //basic::learn_variables();
  //println!("====== module: ownership ======");
  //ownership::learn_ownership();
  //println!("====== module: slice ======");
  //slice::learn_slice();
  //println!("====== module: struct ======");
  //structure::learn_struct();
  //println!("====== module: collection ======");
  //collections::learn_collection();
  //println!("====== module: error ======");
  //error::learn_error();
  // println!("====== moduel: generics ======");
  // generics::learn_generics();
  //println!("====== moduel: functional ======");
  //functional::learn_functional();
  // println!("====== moduel: smartpoint ======");
  //smartpoint::learn_smartpoint();
  //sp::learn_smartpoint2();
  //println!("====== moduel: concurrency ======");
  //thread::learn_thread();
  //channel::learn_channel();
  //sharedstate::learn_sharedstate();
  //println!("====== moduel: oop ======");
  //oop::learn_oop();
  //println!("====== moduel: patterns ======");
  //patterns::learn_patterns();
  // println!("====== moduel: advtrait ======");
  // advfeature::learn_advfeature();
  println!("====== moduel: singlet ======");
  singlet::learn_single_web();

  Ok(())
}
